// 导入必要的第三方模块
const express = require('express');
const path = require('path');
const logger = require('morgan');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const ejs = require('ejs');
const mysql = require('mysql');

// 创建Express应用实例
const app = express();

// 设置视图相关配置
app.set('views', path.join(__dirname, 'views'));
app.engine('.html', ejs.renderFile);
app.set('view engine', 'html');

// 使用各种中间件
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
// 配置静态文件服务中间件，假设public是存放静态文件的目录
app.use(express.static(path.join(__dirname, 'public')));

// 连接MySQL数据库
const client = mysql.createConnection({
    host: 'localhost',
    port: '3306',
    user: 'root',
    password: '123456',
    database: 'test'
});

// 检查数据库连接是否成功
client.connect((err) => {
    if (err) {
        console.log('[query] - :' + err);
        return;
    }
    console.log('[connection connect] MySQL数据库连接成功!');
});

// 导入路由模块
const indexRouter = require('./routes/index');
const itemsRouter = require('./routes/items');
app.use('/', indexRouter);
app.use('/items', itemsRouter);

// 简单的错误处理中间件
app.use((err, req, res, next) => {
    console.error(err);
    res.status(500).send('服务器出现错误，请稍后再试');
});

// 启动服务器，监听指定端口
const port = process.env.PORT || 3000;
app.listen(port, () => {
    console.log(`服务器运行在 http://localhost:${port}`);
});